<?php
class ControllerModuleProductLeft extends Controller {
    private $error = array(); 
    
    public function index() {   
        $this->load->language('module/product_left');

        $this->document->title = $this->language->get('heading_title');
        
        $this->load->model('setting/setting');
                
        if (($this->request->server['REQUEST_METHOD'] == 'POST') && ($this->validate())) {
            
            $this->load->model('catalog/product');             
            $this->model_catalog_product->addSpecialLeftProduct($this->request->post);
                        
            unset($this->request->post['product_left']);
            $this->model_setting_setting->editSetting('product_left', $this->request->post);
            
            $this->cache->delete('product');              
            $this->session->data['success'] = $this->language->get('text_success');
                        
            $this->redirect(HTTPS_SERVER . 'index.php?route=extension/module&token=' . $this->session->data['token']);
        }
                
        $this->data['heading_title'] = $this->language->get('heading_title');

        $this->data['text_enabled'] = $this->language->get('text_enabled');
        $this->data['text_disabled'] = $this->language->get('text_disabled');
        $this->data['text_left'] = $this->language->get('text_left');
        $this->data['text_right'] = $this->language->get('text_right');
        $this->data['text_home'] = $this->language->get('text_home');
        $this->data['text_image_manager'] = $this->language->get('Image Manager');   
        
        $this->data['entry_limit'] = $this->language->get('entry_limit');
        $this->data['entry_position'] = $this->language->get('entry_position');
        $this->data['entry_status'] = $this->language->get('entry_status');
        $this->data['entry_sort_order'] = $this->language->get('entry_sort_order');
        $this->data['entry_product'] = $this->language->get('entry_product');
        
        $this->data['button_save'] = $this->language->get('button_save');
        $this->data['button_cancel'] = $this->language->get('button_cancel');

        if (isset($this->error['warning'])) {
            $this->data['error_warning'] = $this->error['warning'];
        } else {
            $this->data['error_warning'] = '';
        }
        
        if (isset($this->error['product_limit'])) {
            $this->data['error_product_limit'] = $this->error['product_limit'];
        } else {
            $this->data['error_product_limit'] = '';
        }
        
        $this->document->breadcrumbs = array();

         $this->document->breadcrumbs[] = array(
             'href'      => HTTPS_SERVER . 'index.php?route=common/home&token=' . $this->session->data['token'],
             'text'      => $this->language->get('text_home'),
            'separator' => FALSE
         );

         $this->document->breadcrumbs[] = array(
             'href'      => HTTPS_SERVER . 'index.php?route=extension/module&token=' . $this->session->data['token'],
             'text'      => $this->language->get('text_module'),
            'separator' => ' :: '
         );
        
        $this->document->breadcrumbs[] = array(
            'href'      => HTTPS_SERVER . 'index.php?route=module/product_left&token=' . $this->session->data['token'],
            'text'      => $this->language->get('heading_title'),
           'separator' => ' :: '
        );
        
        $this->data['action'] = HTTPS_SERVER . 'index.php?route=module/product_left&token=' . $this->session->data['token'];
        
        $this->data['cancel'] = HTTPS_SERVER . 'index.php?route=extension/module&token=' . $this->session->data['token'];

        $this->data['token'] = $this->session->data['token'];
        
        if (isset($this->request->post['product_limit'])) {
            $this->data['product_limit'] = 4;//$this->request->post['product_limit'];
        } else {
            $this->data['product_limit'] = 4; //$this->config->get('product_limit');
        }    
        
        $this->data['positions'] = array(); 
        /*        
        $this->data['positions'][] = array(
            'position' => 'left',
            'title'    => $this->language->get('text_left'),
        );
        
        $this->data['positions'][] = array(
            'position' => 'right',
            'title'    => $this->language->get('text_right'),
        );
        */
        $this->data['positions'][] = array(
            'position' => 'home',
            'title'    => $this->language->get('text_home'),
        );
        
        if (isset($this->request->post['product_position'])) {
            $this->data['product_position'] = $this->request->post['product_position'];
        } else {
            $this->data['product_position'] = 'home'; //$this->config->get('product_position');
        }
        
        if (isset($this->request->post['product_status'])) {
            $this->data['product_status'] = $this->request->post['product_status'];
        } else {
            $this->data['product_status'] = $this->config->get('product_status');
        }
        
        if (isset($this->request->post['product_sort_order'])) {
            $this->data['product_sort_order'] = $this->request->post['product_sort_order'];
        } else {
            $this->data['product_sort_order'] = $this->config->get('product_sort_order');
        }                
        
        $this->load->model('catalog/category');
                
        $this->data['categories'] = $this->model_catalog_category->getEnableCategories(0);
        
        $this->load->model('catalog/product'); 
                
        if (isset($this->request->post['product_left'])) {
              $this->data['product_left'] = $this->request->post['product_left'];
        } else {
              $this->data['product_left'] = $this->model_catalog_product->getSpecialLeftProducts();
        }
        
        $this->load->model('tool/image'); 
        foreach($this->data['product_left'] as &$featured){
            if($featured['image'] && file_exists(DIR_IMAGE . $featured['image'])) {
                $image_file = $featured['image'];    
            } 
            else {
                $image_file = 'no_image.jpg';
            }
            
            $featured['preview'] = $this->model_tool_image->resize($image_file, 100, 100);
                
        }
        
        $this->template = 'module/product_left.tpl';
        $this->children = array(
            'common/header',    
            'common/footer'    
        );
        
        $this->response->setOutput($this->render(TRUE), $this->config->get('config_compression'));
    }
    
    private function validate() {
        if (!$this->user->hasPermission('modify', 'module/product')) {
            $this->error['warning'] = $this->language->get('error_permission');
        }
        /*
        $products = count($this->request->post['product_left']);
        $accept_values = array(2, 4);
        if(!in_array($products, $accept_values)){
            $this->error['product_limit'] = $this->language->get('error_product_limit');    
        }
        */

        if (!$this->error) {
            return TRUE;
        }
        else {
            return FALSE;
        }    
    }
    
    public function category() {
        $this->load->model('catalog/product');
        
        if (isset($this->request->get['category_id'])) {
            $category_id = $this->request->get['category_id'];
        } else {
            $category_id = 0;
        }
        
        $product_data = array();
        
        $results = $this->model_catalog_product->getProductsByCategoryId($category_id);
        $this->load->model('tool/image');
        
        foreach ($results as $result) {
            if($result['image'] && file_exists(DIR_IMAGE . $result['image'])) {
                $image_file = $result['image'];    
            } 
            else {
                $image_file = 'no_image.jpg';
            }
            
            $product_data[] = array(
                'product_id' => $result['product_id'],
                'name'       => $result['name'],
                'model'      => $result['model'],
                'sku'        => $result['sku'],
                'price'      => $result['price'],
                'image'      => $result['image'],
                'preview'    => $this->model_tool_image->resize($image_file, 100, 100),                
            );
        }
        
        $this->load->library('json');
        
        $this->response->setOutput(Json::encode($product_data));
    }
    
    public function product() {
        $this->load->model('catalog/product');
        
        if (isset($this->request->post['product'])) {
            $products = $this->request->post['product'];
        } else {
            $products = array();
        }
    
        $product_data = array();
        
        foreach ($products as $product_id) {
            $product_info = $this->model_catalog_product->getProduct($product_id);   
                         
            if ($product_info) {
                $product_data[] = array(
                    'product_id' => $product_info['product_id'],
                    'name'       => $product_info['name'],
                    'model'      => $product_info['model'],
                    'sku'        => $product_info['sku'],
                    'price'      => $product_info['price'],
                    'image'      => $product_info['image'],
                );
            }
        }
        
        $this->load->library('json');
        
        $this->response->setOutput(Json::encode($product_data));
    }
}
?>